package com.hongpu.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.hongpu.domain.CoolTowerProjectAttendance;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hongpu.dto.CoolTowerProjectAttendanceDto;
import com.hongpu.dto.CoolTowerProjectAttendanceInfoDto;
import com.hongpu.dto.CoolTowerProjectAttendancePageDto;
import com.hongpu.dto.CoolTowerProjectDto;
import com.hongpu.utils.ResultDto;
import com.hongpu.vo.CostStatisticsVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import java.math.BigDecimal;
import java.util.List;

/**
* @author Michael zhang
* @description 针对表【cool_tower_project_attendance(冷却塔安装人员考勤打卡)】的数据库操作Service
* @createDate 2025-06-10 15:50:48
*/
public interface CoolTowerProjectAttendanceService extends IService<CoolTowerProjectAttendance> {
    /**
     *统计汇总员工在一个项目上的工数及各种费用
     */
    public CoolTowerProjectAttendanceDto selectSum(Long cool_tower_project_id, Long cool_tower_employee_id,String startDate,  String endDate);
    /**
     * 统计员工在项目上的打卡记录
     */
    public List<String> selectCheckInDate(Long coolTowerProjectId, Long coolTowerEmployeeId, String startDate, String endDate);
    /**
     * 统计员工在项目上的备注
     */
    public List<String> selectRemark(Long coolTowerProjectId, Long coolTowerEmployeeId, String startDate, String endDate);

    /**
     * 根据项目ID统计该项目所有的当日费用
     */
    public BigDecimal selectTotalCostByCoolTowerProjectId(Long coolTowerProjectId);

    /**
     * 新增
     */
    public ResultDto add(CoolTowerProjectAttendance coolTowerProjectAttendance);

    /**
     * 工数下拉列表
     */
    public ResultDto optionList();
    /**
     * 根据项目ID统计这个项目的工数
     */
    public BigDecimal selectNumberOfJobsByCoolTowerProjectId(Long coolTowerProjectId);

    /**
     * 分页
     */
    public ResultDto page( CoolTowerProjectAttendancePageDto coolTowerProjectAttendance);
    /**
     * 获取某个员工在项目的具体某一天的打卡信息
     */
    public ResultDto coolTowerProjectAttendanceInfo( CoolTowerProjectAttendanceInfoDto coolTowerProjectAttendanceInfoDto);

    /**
     * 修改某个员工在项目的某天打卡信息
     */
    public ResultDto update( CoolTowerProjectAttendance coolTowerProjectAttendance);

    /**
     *根据项目ID统计该项目的费用---点击填报时打开的页面中数据列表用的接口（分页）
     * @param ipage
     * @param coolTowerProjectDto
     * @return
     */
    public IPage<CostStatisticsVo> costStatistics(  CoolTowerProjectDto coolTowerProjectDto);

    /**
     * 快速打卡
     */
    public ResultDto quickCheckIn(CoolTowerProjectAttendance coolTowerProjectAttendance);

    /**
     * 删除
     */
    public ResultDto delete(Long id);
}
